package pe.edu.unmsm.fisi.sysllabus.integracion.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;

import pe.edu.unmsm.fisi.sysllabus.integracion.dao.CronogramaAcademicoDAO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.CronogramaAcademicoDTO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.CursoCronogramaDTO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.GrupoBdDTO;

@Repository
public class CronogramaAcademicoDAOImpl extends SqlMapClientDaoSupport implements CronogramaAcademicoDAO {
	
	@Autowired
	public CronogramaAcademicoDAOImpl(SqlMapClient sqlMapClient) {
		super.setSqlMapClient(sqlMapClient);
	}

	@Override
	public List<CronogramaAcademicoDTO> selectCronogramaxAnio(Integer anio)
			throws DataAccessException {
		return (List<CronogramaAcademicoDTO>)getSqlMapClientTemplate().queryForList("CronogramaAcademico.selectCronogramaxAnio", anio);
	}

	@Override
	public CronogramaAcademicoDTO selectCronograma(Integer idCronogramaAcademico)
			throws DataAccessException {
		return (CronogramaAcademicoDTO)getSqlMapClientTemplate().queryForObject("CronogramaAcademico.selectCronograma", idCronogramaAcademico);
	}

	@Override
	public Integer insertCronograma(CronogramaAcademicoDTO cronogramaEditar) {
		getSqlMapClientTemplate().insert("CronogramaAcademico.insertCronograma", cronogramaEditar);
		return (Integer)getSqlMapClientTemplate().queryForObject("CronogramaAcademico.maxIdCronograma");
	}

	@Override
	public void updateCronograma(CronogramaAcademicoDTO cronogramaEditar) {
		getSqlMapClientTemplate().update("CronogramaAcademico.updateCronograma", cronogramaEditar);
	}

	@Override
	public void deleteAllCursosxCronograma(Integer idCronograma) {
		getSqlMapClientTemplate().delete("CronogramaAcademico.deleteAllCursosxCronograma", idCronograma);
	}

	@Override
	public void insertGrupoCurso(Integer idCurso, Integer idCronograma,
			Integer idDocente, String nomGrupo, Integer idGrupo) {
		Map map=new HashMap();
		map.put("idCurso", idCurso);
		map.put("idCronograma", idCronograma);
		map.put("idDocente", idDocente);
		map.put("nomGrupo", nomGrupo);
		map.put("idGrupo", idGrupo);
		getSqlMapClientTemplate().insert("CronogramaAcademico.insertGrupoCurso", map);
	}

	@Override
	public List<GrupoBdDTO> selectCursosxCronograma(
			Integer idCronogramaAcademico) {
		return (List<GrupoBdDTO>)getSqlMapClientTemplate().queryForList("CronogramaAcademico.selectCursosxCronograma", idCronogramaAcademico);
	}

}
